import sqlite3
from dbutils.pooled_db import PooledDB
from peewee import SqliteDatabase
import logging

# 使用类变量来存储连接池实例
class DatabasePool: 
    def __init__(self, db_type='sqlite', max_connections=5):
        # 创建连接池
        if db_type == 'sqlite':
            # 创建持久连接池
            self._pool = PooledDB(
                creator=sqlite3,  # 使用 sqlite3
                database='stock_monitor.db',  # 数据库文件名
                maxconnections=10,
                mincached=2,       # 初始化时，连接池中至少创建的空闲连接数
                maxcached=5,       # 连接池中最多空闲的连接
                maxshared=3,       # 连接池中最多共享的连接
                blocking=True,     # 如果没有可用连接，是否阻塞等待
            )
        else:
            raise ValueError("不支持的数据库类型")

        # 创建 Peewee 数据库对象
        self.database = SqliteDatabase('stock_monitor.db')

        # 开启 Peewee 调试模式
        self.database.logger.setLevel(logging.DEBUG)  # 设置日志级别为 DEBUG
        self.database.logger.addHandler(logging.StreamHandler())  # 将日志输出到控制台

    def connect(self):
        """获取一个数据库连接"""
        connection = self._pool.connection()
        logging.info("成功获取数据库连接")
        return connection